home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 015 / utilprtr.arc / HP7470A.BAS < prev    next >
BASIC Source File  |  1983-09-20  |  4KB  |  51 lines

  1. 1 ' ********  Example of function use for generating HP7470A plots ********
  2. 2 '                       Peter Wohlmut  Feb. 17, 1983
  3. 3 ' functions should be loaded first, and program should start at line 1000
  4. 4 ' ***********************************************************************
  5. 10 DEF FNINITIAL$(DUMMY)="com1:2400,s,7,1,cs65535,ds65535,cd"
  6. 20 DEF FNRS232$(DUMMY)="in"+CHR$(27)+".@;13:ss"
  7. 30 DEF FNSCALE$(MINX,MAXX,MINY,MAXY)="sc"+STR$(MINX)+","+STR$(MAXX)+","+STR$(MINY)+","+STR$(MAXY)
  8. 40 DEF FNGETPEN$(ACTION)="sp"+STR$(ACTION)
  9. 50 DEF FNPENS$(D$)="p"+D$
  10. 60 DEF FNPLOT$(A$,X,Y)="p"+A$+STR$(X)+","+STR$(Y)
  11. 70 DEF FNFIDUCIALS$(XF1,YF1,XF2,YF2)="ip"+STR$(XF1)+","+STR$(YF1)+","+STR$(XF2)+","+STR$(YF2)
  12. 80 DEF FNTICK$(A$,TP,TN)="tl"+STR$(TP)+","+STR$(TN)+A$+"T"
  13. 90 DEF FNCHARSET$(NUMBER)="ca"+STR$(NUMBER)+"sa"
  14. 100 DEF FNLABEL$(LAB$,SX,SY,H,V)="sr"+STR$(SX)+","+STR$(SY)+",di"+STR$(H)+","+STR$(V)+"lb"+LAB$+CHR$(3)
  15. 110 DEF FNDASHES$(DOTS)="lt"+STR$(DOTS)
  16. 120 DEF FNWINDOW$(XF1,YF1,XF2,YF2)="iw"+"str$(xf1)+","+str$(yf1)+","+str$(xf2)+","+str$(yf2)
  17. 130 DEF FNC(DIL,SIZ,VMIN,VMAX)=DIL*SIZ*(VMAX-VMIN)/100+VMIN:DEF FNL(LONG,SIZ,VMIN,VMAX)=((VMAX-VMIN)*(1-LONG*SIZ/100))/2+VMIN ' calculate character offset (fnc) and label centering on axix (fnl)
  18. 135 GOTO 1000
  19. 140 LGT=LEN(LABEL$):IF VER=0 THEN XP=FNL(LGT,1.5*SX,XMIN,XMAX):YP=FNC(DEL,2*SY,YMIN,YMAX) ELSE IF HOR = 0 THEN XP=FNC(DEL,1.5*SX,XMIN,XMAX):YP=FNL(LGT,2*SY,YMIN,YMAX):RETURN ' subroutine to center   label on axis
  20. 150 XP=10300*XINCH/10.2:YP=7560*YINCH/7.5:RETURN ' convert inches to plotter units
  21. 180 CLS:LOCATE 15,10:PRINT "Chose pen 1 or 2 ";
  22. 181 Z$=INKEY$:IF Z$="" THEN 181 ELSE PENO=VAL(Z$):IF PENO <0 THEN 181 ELSE PRINT Z$:RETURN 'select pen
  23. 185 ' ******      Examples of use     ******
  24. 190 ' PRINT #2,FNSCALE$(XMIN,XMAX,YMIN,YMAX)
  25. 200 ' PRINT #2,FNGETPEN$(0) ' 0 to put back, # to get pen#
  26. 210 ' PRINT #2,FNPEN$("d") ' "d" for down, "u" for up
  27. 220 ' PRINT #2,FNPLOT$("a",XP,YP) '"a" for absolute, "r" for relative
  28. 230 ' XP=10300*XINCH/10.2:YP=7560*YINCH/7.5:RETURN ' convert inches to plotter units
  29. 240 ' PRINT #2,FNFIDUCIALS$(XFID1,XFID2,YFID2)
  30. 250  'PRINT #2,FNTICK$("x",.5,.5) '"x" on x axis, "y" on y axis, % total scale for above, below axis
  31. 260 ' PRINT #2,FNCHARSET$(0) ' character set 0 to 4
  32. 270 ' PRINT #2,FNLABEL$(LABEL$,SX,SY,HOR,VER) 'write label
  33. 280 ' PRINT #2,FNDASHES$(DOTS) ' line type routine (0 to 6)
  34. 290 ' ******                         ******
  35. 1000 DIM X(1000),Y(1000)
  36. 1005 REM initialize plotter file
  37. 1010 OPEN FNINITIAL$(2) AS #2:PRINT #2,FNRS232$(2)
  38. 1015 REM set up plotting border in inches and draw box
  39. 1020 XINCH=.4:YINCH=.5:GOSUB 150:GOSUB 1* 8 PRINT #2,FNGETPEN$(PENO):PRINT #2,FNPENS$("u"):XP1=XP:YP1=YP:PRINT #2,FNPLOT$("a",XP1,YP1):PRINT #2,FNPENS$("d"):XINCH=9.399999:YINCH=7.3:GOSUB 150:XP2=XP:YP2=YP:PRINT #2,FNPLOT$("a",XP2,YP1)
  40. 1030 PRINT #2,FNPLOT$("a",XP2,YP2):PRINT #2,FNPLOT$("a",XP1,YP2):PRINT #2,FNPLOT$("a",XP1,YP1);FNPENS$("U")
  41. 1040 KEY OFF:CLS
  42. 1045 XMIN=-10:XMAX=10:YMIN=50:YMAX=100:XINCH=2:YINCH=2:GOSUB 150:X1=XP:Y1=YP:XINCH=8:YINCH=6:GOSUB 150:X2=XP:Y2=YP:PRINT #2,FNFIDUCIALS$(X1,Y1,X2,Y2);FNSCALE$(XMIN,XMAX,YMIN,YMAX)
  43. 1050 PRINT #2,FNPENS$("u");FNPLOT$("a",-10,100);FNPENS$("d"):FOR X=-10 TO 10 STEP .1:Y=.5*X*X+50
  44. 1060 PRINT #2,FNPLOT$("a",X,Y):NEXT X:PRINT #2,FNPENS$("u")
  45. 1070 PRINT #2,FNPLOT$("a",10,50);FNPENS$("d");FNPLOT$("a",-10,50);FNPENS$("u");FNPLOT$("a",0,50);FNPENS$("d");FNPLOT$("a",0,100);FNPENS$("u")
  46. 1080 PRINT #2,FNPLOT$("a",10,50)
  47. 1090 FOR X= 10 TO - 10 STEP -1:PRINT #2,FNPLOT$("a",X,50);FNTICK$("x",.5,.5):NEXT X
  48. 1100 PRINT #2,FNPLOT$("a",0,50):FOR Y=50 TO 100 STEP 5:PRINT #2,FNPLOT$("a",0,Y);FNTICK$("y",.5,.5):NEXT Y
  49. 1110 LABEL$="X-Axis":VER=0:HOR=1:SX=3:SY=3:DEL=-4:GOSUB 140:PRINT #2,FNPLOT$("a",XP,YP);FNLABEL$(LABEL$,SX,SY,HOR,VER)
  50. 9000 CLOSE #2:END
  51.